﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
using Tibet.Logica.Comandos.ComandoMotorMetrica;
using Tibet.Logica.Comandos;
using Tibet.Logica.FabricaLogica;
using Tibet.Entidades;
using Tibet.Datos;

namespace Tibet.Pruebas
{
    [TestFixture]
    class PruebaModificarPerfilMetrica
    {
         [TestCase]
         public void ProbarModificacion()
         {             

             Comando ConsultarPerfilesConEseNombre = FabricaComandoMetrica.ObtenerComandoBuscarPerfilesPorNombre("Perfil de Metricas Prueba 1");
             ConsultarPerfilesConEseNombre.Ejecutar();
             List<Entidad> ListaEntidadesConNombreEspecifico = ConsultarPerfilesConEseNombre.ListaEntidad;

             PerfilMetrica PerfilConQuienProbar = new PerfilMetrica();

             foreach ( PerfilMetrica Perfil in ListaEntidadesConNombreEspecifico )
             {
                 if (Perfil.NombrePerfilMetrica.Equals("Perfil de Metricas Prueba 1"))
                 {
                     PerfilConQuienProbar = Perfil;
                     break;
                 }
             }

             List<Entidad> ListaMetricasNuevas = new List<Entidad>(); ;

             Metrica miMetricaUno = new Metrica();
             miMetricaUno.IdMetrica = 3;
             ListaMetricasNuevas.Add(miMetricaUno);

             Metrica miMetricaDos = new Metrica();
             miMetricaDos.IdMetrica = 7;
             ListaMetricasNuevas.Add(miMetricaDos);

             Comando modificarPerfilMetrica = FabricaComandoMetrica.ObtenerComandoModificarPerfil(PerfilConQuienProbar.IdPerfilMetrica, ListaMetricasNuevas, "Perfil de Metricas Prueba 1");
             modificarPerfilMetrica.Ejecutar();

             Comando CBuscarMetricasDePerfil = FabricaComandoMetrica.ObtenerComandoConsultarMetricaDePerfil(PerfilConQuienProbar.IdPerfilMetrica);
             CBuscarMetricasDePerfil.Ejecutar();

            List<Entidad> NuevasMetricas = CBuscarMetricasDePerfil.ListaEntidad;

            Assert.AreEqual(ListaMetricasNuevas.Count, NuevasMetricas.Count);

            bool TodasMetricasSonIguales = true;

            foreach (Metrica MetricaAProbar in ListaMetricasNuevas)
            {
                bool encontro = false;
                foreach (Metrica MetricaABuscar in NuevasMetricas)
                {
                    if (MetricaABuscar.IdMetrica == MetricaABuscar.IdMetrica)
                    { encontro = true; break; }
                }
                if (!encontro)
                { TodasMetricasSonIguales = false; break; }
            }

            Assert.IsTrue(TodasMetricasSonIguales);

         }
    

    }
}
